package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.*;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

public interface BaseOwnerCommitteeService extends BaseService<BaseOwnerCommittee> {
    /**
     * 获取待审批注册列表
     *
     * @param page
     * @param baseOwnerCommittee
     * @return
     */
    PageInfo<BaseOwnerCommittee> getAuditList(Page page, BaseOwnerCommittee baseOwnerCommittee, String flowType);

    /**
     * 添加审批流程
     *
     * @param
     */
    CommonResult addAudit(String businessId, String opinion, String mark);

    /**
     * 添加审批流程
     *
     * @param
     */
    CommonResult updateAudit(String businessId, String opinion, String mark);

    /**
     * 修改保存新旧数据
     *
     * @param baseOwnerCommitte
     * @return
     * @throws Exception
     */
    public CommonResult updateToSave(BaseOwnerCommittee baseOwnerCommitte) throws Exception;

    /**
     * 新增返回id
     *
     * @param baseOwnerCommittee
     * @return
     */
    public CommonResult insertToId(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 业主居委会变更审核
     *
     * @param id
     * @param opinion
     * @param mark
     * @return
     */
    CommonResult changeResidentialCommittee(String id, String opinion, String mark);

    /**
     * 修改并提交
     * @param baseOwnerCommittee
     * @return
     */
    CommonResult updateAndAdd(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 备案
     *
     * @param baseOwnerCommittee recDate备案时间now
     *                           state 备案1 撤销备案0
     * @return
     */
    CommonResult record(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 提交
     *
     * @param id
     * @return
     */
    CommonResult insertSaveAndSubmit(String id,String operNo);

    /**
     * 外网保存并提交
     *
     * @param baseOwnerCommittee
     * @return
     */
    CommonResult submitAuditAndAdd(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 查看登录人
     *
     * @param id
     * @return
     */
    CommonResult selectWhoLogin(String id);

    /**
     * 查询变更详情列表
     *
     * @return
     */
    PageInfo<BaseModifyDetail> getModifyDetailList(Page page, BaseModifyDetail baseModifyDetail);

    /**
     * 查询业委会详情
     *
     * @param id      业委会ID
     * @param arcType 图档大类
     * @return 业委会实体
     */
    BaseOwnerCommittee getInfoById(String id, String arcType);

    /**
     * 查询审核驳回
     *
     * @param operNo
     * @return
     */
    BaseOwnerCommittee rejectionExaminationApproval(String operNo, String arcType);
    /**
     * 获取外网确认变更接口
     *
     * @param modifyVO 变更项集合
     * @return 变更结果
     */
    CommonResult getExtraNetModify(ModifyVO modifyVO);
    /**
     * 外网获取变更信息列表
     *
     * @param page         分页信息
     * @param baseOwnerCommittee 查询信息
     * @return 业委会变更列表
     */
    PageInfo<BaseOwnerCommittee> getModifyListToExtraNet(Page page, BaseOwnerCommittee baseOwnerCommittee);
    /**
     * 校验小区是否存在业委会或者居委会
     *
     * @param regionId 小区ID
     * @return true/false
     */
    Boolean checkRegion(String regionId);
    /**
     * 查询业委会/居委会的小区列表
     *
     * @param page           分页信息
     * @param baseRegionInfo 查询实体
     * @return 小区列表
     */
    PageInfo<BaseRegionInfo> getOrgRegionList(Page page, BaseRegionInfo baseRegionInfo);
    /**
     * 外网查询业委会/居委会管理的小区
     *
     * @param operNo 登录账号
     * @return 小区列表
     */
    List<BaseRegionInfo> getCommitteeRegionList(String operNo);
}
